package com.kelvem.saas.workbanch.ontology.order.event;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
 * 订单管理模块Service
 *
 * @ClassName OrdersService
 * @author kelvem
 * @version 1.0
 */
@Service
@Transactional
public class OrdersEventService {
	
	private final Logger logger = LoggerFactory.getLogger(getClass());

//	@Resource private OrdersService ordersService;
//	@Resource private SkuRequestProxyService skuRequestProxyService;
//	@Resource private FsmProxyService<OrdersEntity> fsmProxyService;
//	@Resource private ErpRestApi erpRestApi;
//	@Resource private FrontendRestApi frontendRestApi;
//
//	/**
//	 * 创建订单
//	 *
//	 * @param Integer ordersId
//	 * @return
//	 * @see
//	 */
//	public void create(OrdersEntity order){
//
//		try {
//			BigDecimal price = erpRestApi.estimateShippingPric(order);
//
//			order.setEstimateShippingPrice(price);
//			ordersService.updateOrders(order);
//
//		} catch (Exception e) {
//			String msg = "创建订单时计算预估运费失败. " + e.getMessage();
//			logger.error(msg);
//		}
//
//		fsmProxyService.processEvent(order, OrdersFsmEventEnum.create, "create order");
//		logger.info("状态机[Orders] processEvent - create order");
//	}
//
//	/**
//	 * 创建订单
//	 *
//	 * @param Integer ordersId
//	 * @return
//	 * @see
//	 */
//	public void confirmPayment(OrdersEntity order, String remark){
//
//		if (remark == null || remark.trim().length() <= 0) {
//			remark = "confirm order";
//		}
//
//		fsmProxyService.processEvent(order, OrdersFsmEventEnum.confirm_payment, remark);
//		logger.debug("状态机 processEvent - confirm order");
//	}
	
	
	
	
	
	
	
	
	
//	/**
//	 * 恢复订单
//	 *
//	 * @param Integer ordersId
//	 * @return
//	 * @see
//	 */
//	public void recover(Integer ordersId){
//
//		XikeAssert.notNull(ordersId, CommonErrorCode.COMMON_PARAM_NULL);
//
//		OrdersEntity order = ordersService.getOrdersById(ordersId);
//		this.recover(order);
//	}
//
//	/**
//	 * 恢复订单
//	 *
//	 * @param OrdersEntity order
//	 * @return
//	 * @see
//	 */
//	public void recover(OrdersEntity order){
//
//		logger.debug("恢复订单开始, order={}", order);
//		XikeAssert.notNull(order, CommonErrorCode.COMMON_PARAM_NULL);
//		XikeAssert.notNull(order.getId(), CommonErrorCode.COMMON_PARAM_NULL);
//
//		try {
//			Integer pendingRequestCnt = skuRequestProxyService.getPendingRquestCount(order);
//			if (pendingRequestCnt > 0) {
//				logger.debug("订单[{}]有未处理的pending请求[{}]个, 不执行订单恢复", order.getId(), pendingRequestCnt);
//			} else {
//				if (order.getState().startsWith("suspend_")) {
//					fsmProxyService.processEvent(order, OrdersFsmEventEnum.recover, "恢复订单");
//					logger.debug("恢复订单成功");
//				} else {
//					logger.debug("订单[{}]不处在订单暂停的状态[{}], 不执行订单恢复", order.getId(), order.getState());
//				}
//			}
//
//			logger.debug("恢复订单结束, orderId={}", order.getId());
//		} catch (Exception e) {
//			String msg = "恢复订单失败. " + e.getMessage();
//			logger.error(msg);
//			throw new XikeException(msg, e);
//		}
//	}
//
//	/**
//	 * 订单暂停
//	 *
//	 * @param Integer ordersId
//	 * @return
//	 * @see
//	 */
//	public void suspend(Integer ordersId){
//
//		XikeAssert.notNull(ordersId, CommonErrorCode.COMMON_PARAM_NULL);
//
//		OrdersEntity order = ordersService.getOrdersById(ordersId);
//		this.suspend(order);
//	}
//
//	/**
//	 * 订单暂停
//	 *
//	 * @param OrdersEntity order
//	 * @return
//	 * @see
//	 */
//	public void suspend(OrdersEntity order){
//
//		logger.debug("订单暂停开始, order={}", order);
//		XikeAssert.notNull(order, CommonErrorCode.COMMON_PARAM_NULL);
//		XikeAssert.notNull(order.getId(), CommonErrorCode.COMMON_PARAM_NULL);
//
//		try {
//			fsmProxyService.processEvent(order, OrdersFsmEventEnum.suspend, "订单暂停");
//
//			logger.debug("订单暂停成功");
//		} catch (Exception e) {
//			String msg = "订单暂停失败. " + e.getMessage();
//			logger.error(msg);
//			throw new XikeException(msg, e);
//		}
//	}
//
//	/**
//	 * 订单整单取消
//	 *
//	 * @param OrdersEntity order
//	 * @return
//	 * @see
//	 */
//	public void cancel(OrdersEntity order){
//
//		logger.debug("订单整单取消开始, order={}", order);
//		XikeAssert.notNull(order, CommonErrorCode.COMMON_PARAM_NULL);
//		XikeAssert.notNull(order.getId(), CommonErrorCode.COMMON_PARAM_NULL);
//
//		try {
//			if (StoreTypeEnum.SHOPIFY.isType(order.getStoreId())) {
//				for (int i = 0; i < 3; i++) {
//					if (cancelShopifyOrder(order)) {
//						break;
//					}
//					throw new XikeException("订单整单取消失败,通知shopify失败!");
//				}
//			}
//			fsmProxyService.processEvent(order, OrdersFsmEventEnum.cancel, "订单整单取消");
//
//			logger.debug("订单整单取消成功");
//		} catch (Exception e) {
//			String msg = "订单整单取消失败. " + e.getMessage();
//			logger.error(msg);
//			throw new XikeException(msg, e);
//		}
//	}
//
//	/**
//	 * 订单增加日志
//	 *
//	 * @param Integer orderId
//	 * @param String remark
//	 * @param String remarType
//	 * @return
//	 * @see
//	 */
//	public void addLog(Integer orderId, String remark, String remarType){
//
//		logger.debug("订单增加日志开始, orderId={}, remark={}, remarType={}", orderId, remark, remarType);
//		XikeAssert.notNull(orderId, CommonErrorCode.COMMON_PARAM_NULL);
//		XikeAssert.notEmpty(remark, CommonErrorCode.COMMON_PARAM_NULL);
//
//		try {
//			if (remarType == null || remarType.trim().length() <= 0) {
//				remarType = FsmConstant.EVENT_LOG;
//			}
//			OrdersEntity order = ordersService.getOrdersById(orderId);
//			fsmProxyService.processLog(order, remarType, remark);
//
//			logger.debug("订单增加日志成功");
//		} catch (Exception e) {
//			String msg = "订单增加日志失败. " + e.getMessage();
//			logger.error(msg);
//			throw new XikeException(msg, e);
//		}
//	}
//
//
//	public Boolean cancelShopifyOrder(OrdersEntity order) {
//		if (OrdersFsmEventEnum.ship.name().equalsIgnoreCase(order.getState())
//			||OrdersFsmEventEnum.received.name().equalsIgnoreCase(order.getState())
//			||OrdersFsmEventEnum.returned.name().equalsIgnoreCase(order.getState())) {
//			return true;
//		}
//
//		if (null==order.getStoreParentId()||order.getStoreParentId().equals(0)) {
//			if (order.getStoreOrderId()==null||order.getStoreOrderId().equals(0l)) {
//				return true;
//			}
//			if (StoreTypeEnum.SHOPIFY.isType(order.getStoreId())) {
//				return frontendRestApi.cancelShopifyOrder(order.getStoreId(), order.getStoreOrderId());
//			}
//		}else {
//			OrdersEntity parentOrder=ordersService.getOrdersById(order.getStoreParentId());
//			if (null!=parentOrder) {
//				//return frontendRestApi.cancelShopifyOrder(parentOrder.getStoreId(), parentOrder.getStoreOrderId());
//				return cancelShopifyOrder(parentOrder);
//			}
//		}
//		return true;
//	}


}
